//
// Description: 吮指原味鸡
// Created by Loading on 2021/6/19.
//

// 原味鸡的三角最好吃，所以这题和三角有关。
// 大栗现在有一些长度为2的若干次方的木棍。
// 他有a0个长度为2^0=1的木棍， a1个长度为2的木棍，…, an-1个长度为2^n-1的木棍。
// 大栗想要用这些木棍摆出最大数量的三角形。这些三角形的面积需要为正，并且每个木棍最多被用在一个三角形内。
// 木棍不能被折断，每个三角形应该严格包含三根木棍 请找到最大可能的三角形数量。

// Input
// 第一行包括一个整数n(1<=n<=300000) 第二行包括n个整数a0,a1,…,an-1 (1<=ai<=10^9), 其中ai是长度等于2^i的木棍的数量。
//
// Output
// 输出一个整数，表示符合条件的最大三角形数量。

// Examples
//
// Input
// 4
// 1 1 2 2
//
// Output
// 2

// Input
// 3
// 1 1 1
//
// Output
// 0

// Input
// 3
// 3 3 3
//
// Output
// 3

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

int main() {
    int n;
    cin >> n;
    LL res = 0;
    //剩余长度较短的木棍数量
    LL last_num = 0;

    //两种情况，1、等边三角形；2、两个长度较大 + 一个长度较小
    /* 由于都是 2 的幂，三角形三条边不可能出现三根不同的木棍，也不可能出现两个长度较小 + 一个长度较大的木棍 */
    for (int i = 0; i < n; ++i) {
        /* (1<=ai<=10^9) 越界警告，使用 long long */
        LL temp;
        cin >> temp;
        //优先使用两个长度较大 + 之前剩余的一个长度较小的
        LL current_num = min(temp / 2, last_num);
        //更新较短木棍数量
        last_num -= current_num;
        //计算当前输入的木棍数量在考虑完第二种情况后的剩余
        temp -= current_num * 2;
        //考虑等边三角形情况
        res += current_num + temp / 3;
        //计算等边三角形数量后，再次更新较短木棍数量
        last_num += temp % 3;
    }

    cout << res << endl;
}